import 'package:flutter/material.dart';

/// 情绪类型枚举
/// 定义应用中支持的各种情绪状态
enum MoodType {
  /// 非常开心 😄
  veryHappy,
  /// 开心 😊
  happy,
  /// 平静 😌
  calm,
  /// 一般 😐
  neutral,
  /// 有点难过 😔
  slightlySad,
  /// 难过 😢
  sad,
  /// 非常难过 😭
  verySad,
  /// 焦虑 😰
  anxious,
  /// 愤怒 😠
  angry,
  /// 兴奋 🤩
  excited;

  /// 从字符串转换为情绪类型
  static MoodType fromString(String value) {
    return MoodType.values.firstWhere(
      (type) => type.toString().split('.').last == value,
      orElse: () => MoodType.neutral,
    );
  }
}

/// 情绪类型扩展方法
extension MoodTypeExtension on MoodType {
  /// 获取情绪的中文名称
  String get displayName {
    switch (this) {
      case MoodType.veryHappy:
        return '非常开心';
      case MoodType.happy:
        return '开心';
      case MoodType.calm:
        return '平静';
      case MoodType.neutral:
        return '一般';
      case MoodType.slightlySad:
        return '有点难过';
      case MoodType.sad:
        return '难过';
      case MoodType.verySad:
        return '非常难过';
      case MoodType.anxious:
        return '焦虑';
      case MoodType.angry:
        return '愤怒';
      case MoodType.excited:
        return '兴奋';
    }
  }

  /// 获取情绪对应的emoji表情
  String get emoji {
    switch (this) {
      case MoodType.veryHappy:
        return '😄';
      case MoodType.happy:
        return '😊';
      case MoodType.calm:
        return '😌';
      case MoodType.neutral:
        return '😐';
      case MoodType.slightlySad:
        return '😔';
      case MoodType.sad:
        return '😢';
      case MoodType.verySad:
        return '😭';
      case MoodType.anxious:
        return '😰';
      case MoodType.angry:
        return '😠';
      case MoodType.excited:
        return '🤩';
    }
  }

  /// 获取情绪的数值评分（1-10，数值越高情绪越积极）
  int get score {
    switch (this) {
      case MoodType.verySad:
        return 1;
      case MoodType.sad:
        return 2;
      case MoodType.slightlySad:
        return 3;
      case MoodType.anxious:
        return 4;
      case MoodType.angry:
        return 4;
      case MoodType.neutral:
        return 5;
      case MoodType.calm:
        return 6;
      case MoodType.happy:
        return 7;
      case MoodType.excited:
        return 8;
      case MoodType.veryHappy:
        return 9;
    }
  }

  /// 获取情绪对应的主题色彩
  String get colorHex {
    switch (this) {
      case MoodType.veryHappy:
        return '#FFD700'; // 金黄色
      case MoodType.happy:
        return '#FFA500'; // 橙色
      case MoodType.excited:
        return '#FF6B6B'; // 珊瑚红
      case MoodType.calm:
        return '#87CEEB'; // 天蓝色
      case MoodType.neutral:
        return '#D3D3D3'; // 浅灰色
      case MoodType.slightlySad:
        return '#9370DB'; // 中紫色
      case MoodType.sad:
        return '#6A5ACD'; // 石板蓝
      case MoodType.verySad:
        return '#483D8B'; // 深石板蓝
      case MoodType.anxious:
        return '#DDA0DD'; // 梅红色
      case MoodType.angry:
        return '#CD5C5C'; // 印度红
    }
  }

  /// 获取情绪对应的Flutter Color对象
  Color get color {
    switch (this) {
      case MoodType.veryHappy:
        return const Color(0xFFFFD700); // 金黄色
      case MoodType.happy:
        return const Color(0xFFFFA500); // 橙色
      case MoodType.excited:
        return const Color(0xFFFF6B6B); // 珊瑚红
      case MoodType.calm:
        return const Color(0xFF87CEEB); // 天蓝色
      case MoodType.neutral:
        return const Color(0xFFD3D3D3); // 浅灰色
      case MoodType.slightlySad:
        return const Color(0xFF9370DB); // 中紫色
      case MoodType.sad:
        return const Color(0xFF6A5ACD); // 石板蓝
      case MoodType.verySad:
        return const Color(0xFF483D8B); // 深石板蓝
      case MoodType.anxious:
        return const Color(0xFFDDA0DD); // 梅红色
      case MoodType.angry:
        return const Color(0xFFCD5C5C); // 印度红
    }
  }

  /// 获取情绪对应的图标
  IconData get icon {
    switch (this) {
      case MoodType.veryHappy:
        return Icons.sentiment_very_satisfied;
      case MoodType.happy:
        return Icons.sentiment_satisfied;
      case MoodType.excited:
        return Icons.star;
      case MoodType.calm:
        return Icons.self_improvement;
      case MoodType.neutral:
        return Icons.sentiment_neutral;
      case MoodType.slightlySad:
        return Icons.sentiment_dissatisfied;
      case MoodType.sad:
        return Icons.sentiment_very_dissatisfied;
      case MoodType.verySad:
        return Icons.mood_bad;
      case MoodType.anxious:
        return Icons.psychology;
      case MoodType.angry:
        return Icons.warning;
    }
  }

  /// 获取情绪的标签名称（用于显示）
  String get label {
    return displayName;
  }

}